package cipher

import (
	"crypto/md5"
	"crypto/sha256"
	"io"
	"log"
	"os"
)

/**
封装两个常用的hash函数，MD5,SHA256
MD5 16字节，128位
 */
func MD5(src []byte) []byte  {
	h:=md5.Sum(src)
	return h[:]
}
/**
SHA256 32字节，256位
 */
func SHA256(src []byte) []byte  {
	h:=sha256.Sum256(src)
	return h[:]
}

//对文件Hash
func MD5File(filePath string) []byte  {
	file, err := os.Open(filePath)
	if err != nil {
		log.Print("MD5File：打开文件错误！")
		return nil
	}
	defer file.Close()
	hash := md5.New()
	if _, err = io.Copy(hash, file); err != nil {
		log.Print("MD5File：Copy错误！")
		return nil
	}
	return hash.Sum(nil)
}

func SHA256File(filePath string) []byte  {
	file, err := os.Open(filePath)
	if err != nil {
		log.Print("SHA256File：打开文件错误！")
		return nil
	}
	defer file.Close()
	hash := sha256.New()
	if _, err = io.Copy(hash, file); err != nil {
		log.Print("SHA256File：Copy错误！")
		return nil
	}
	return hash.Sum(nil)
}
